home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / gpen32k / source / src / gpensub.c < prev    next >
Encoding:
Text File  |  1994-06-01  |  4.4 KB  |  232 lines

  1. /*
  2.     Gpen共通関数
  3.         別ヘッダ必要版
  4. */
  5.  
  6. void umosv( int x1, int y1, int x2, int y2 )
  7. {
  8.     mosv( x1*bi, y1*bi, (x2+1)*bi-1, (y2+1)*bi-1);
  9. }
  10.  
  11. void biubox( int x1, int y1, int x2, int y2, int c1, int c2, int c3 )
  12. {
  13.     uboxf(x1*bi-1, y1*bi-1, (x2+1)*bi, (y2+1)*bi, c1, c2, c3 );
  14. }
  15.  
  16. void biboxbf( int x1, int y1, int x2, int y2, int c, int h, int h2 )
  17. {
  18.     uboxf( x1*bi-h-1, y1*bi-h2-1, (x2+1)*bi+h, (y2+1)*bi+h, 15, 8, BCL );
  19.     uboxf( x1*bi-1, y1*bi-1, (x2+1)*bi, (y2+1)*bi, 8, 15, c );
  20. }
  21.  
  22. int gpx(int mx)
  23. {
  24.     int mx2;
  25.     mx2 = BX1 + ( mx/bi - NX4/2 + ix/2 - BX1 ) / ix * ix;
  26.     if ( mx2 < BX1 )    mx2 = BX1;
  27.     if ( mx2 + NX3 > BX2 )    mx2 = BX2 - NX3;
  28.     return (mx2);
  29. }
  30.  
  31. int gpy(int my)
  32. {
  33.     int my2;
  34.     my2 = BY1 + ( my/bi - NY4/2 + iy/2 - BY1 ) / iy * iy;
  35.     if ( my2 < BY1 )    my2 = BY1;
  36.     if ( my2 + NY3 > BY2 )    my2 = BY2 - NY3;
  37.     return (my2);
  38. }
  39.  
  40. void wget( void )
  41. {
  42.     egbget( NX1, NY1, NX2, NY2, wb );
  43. }
  44.  
  45. void wput( void )
  46. {
  47.     egbput( NX1, NY1, NX2, NY2, wb );
  48.     if (WX4!=NX4)
  49.         egbputZ( WX1, WY1, WX2, WY2, NX4, NY4, wb );
  50. }
  51.  
  52. void wkk( void )
  53. {
  54.     wget();
  55.     if (WX4!=NX4)
  56.         egbputZ( WX1, WY1, WX2, WY2, NX4, NY4, wb );
  57. }
  58.  
  59. void wkugiri( int t )
  60. {
  61.     static int g=0;
  62.     char a[1024];
  63.     int i;
  64.     if ( t == 2 )
  65.         g = 0;
  66.     if ( t == 3 )
  67.         g = 1;
  68.     if ( t & g )
  69.     {
  70.         line(WX1*bi, (WY1+KS)*bi, (WX2+1)*bi-1, (WY1+KS)*bi, 8 );
  71.         for (i=1; i<NX4; i++)
  72.         {
  73.             line((WX1+KS*i)*bi, WY1*bi, (WX1+KS*i)*bi, (WY2+1)*bi-1, 8 );
  74.             line((WX1+KS*i)*bi, (WY1+KS)*bi, (WX1+KS*i)*bi, (WY1+KS)*bi, 15 );
  75.         }
  76.         egbget( WX1*bi, (WY1+KS)*bi, (WX2+1)*bi-1, (WY1+KS)*bi, a );
  77.         for (i=2; i<NY4; i++)
  78.         {
  79.             egbput(WX1*bi, (WY1+KS*i)*bi, (WX2+1)*bi-1, (WY1+KS*i)*bi, a);
  80.         }
  81.     }    else    {
  82.         boxf( WX1*bi, WY1*bi, (WX2+1)*bi-1, (WY2+1)*bi-1, 0 );
  83.     }
  84. }
  85.  
  86. int page( int c )
  87. {
  88.     static int v = 0;
  89.     char t[12];
  90.     egbget( BX1,BY1, BX2,BY2, vp);
  91.     v += c;
  92.     while (v < 0)
  93.         v += vz + 1;
  94.     while ( v > vz )
  95.         v -= vz + 1;
  96.     vp = vp0 + v * BX4 * BY4 * Cb / 8;
  97.     egbput( BX1,BY1, BX2,BY2, vp);
  98.     wpg(0);
  99.     boxf( PAX1+1, PAY1+1, PAX2-1, PAY2-1, 8 );
  100.     _itoa( v+1, t, 10 );
  101.     symbol( PAX2-4-strlen(t)*8, PAY2-1, t, 16, 15 );
  102.     wpg(1);
  103.     return (v);
  104. }
  105.  
  106. void pbtn( int mb )
  107. {
  108.     int x, y, bt = 10;
  109.     unsigned int t1, t2;
  110.     t1 = MOS_getTime();
  111.     while (mb)
  112.     {
  113.         page((mb & 1) ? 1 : (-1));
  114.         do
  115.         {
  116.             t2 = MOS_getTime();
  117.             MOS_rdpos(&mb,&x,&y);
  118.         }    while (t2-t1<bt && mb!=0);
  119.         t1 = t2;
  120.         if (bt>1)
  121.             bt--;
  122.     }
  123. }
  124.  
  125. void bfgs( int mc )
  126. {
  127.     char t[12];
  128.     int p, x, y;
  129.     p = EGB_getWritePage( 0, 0 );
  130.     if (mc==1)
  131.     {
  132.         ix*=2;
  133.         if (ix>=256/bi)
  134.             ix = 1;
  135.         iy*=2;
  136.         if (iy>=256/bi)
  137.             iy = 1;
  138.     }    else    {
  139.         if (ix==1)
  140.             ix+=256/bi;
  141.         if (iy==1)
  142.             iy+=256/bi;
  143.         ix/=2;
  144.         iy/=2;
  145.     }
  146.     wpg(0);
  147.     boxf( HX1+1, HY1+1, HX2-1, HY2-1, 0 );
  148.     _itoa( ix, t, 10 );
  149.     symbol( HX2-4-strlen(t)*8, HY2-1, t, 16, 15 );
  150.     wpg(p);
  151.     mbout( &p, &x, &y );
  152. }
  153.  
  154. void mbclp( void )
  155. {
  156.     MOS_getBtnXchg( &bc );
  157.     boxf( PCX1, PCY1, PCX2, PCY2, mcl[0] );
  158.     boxf( PLX1, PLY1, PLX2, PLY2, mcl[1+bc] );
  159.     boxf( PRX1, PRY1, PRX2, PRY2, mcl[2-bc] );
  160.     wpg(0);
  161.     boxf( PCX1*bi+2, PCY1*bi-5, PCX1*bi+12, PCY1*bi-3, (mcl[0]>>15)*0xff );
  162.     boxf( PLX1*bi+2, PLY1*bi-5, PLX1*bi+12, PLY1*bi-3, (mcl[1+bc]>>15)*0xff );
  163.     boxf( PRX1*bi+2, PRY1*bi-5, PRX1*bi+12, PRY1*bi-3, (mcl[2-bc]>>15)*0xff );
  164.     wpg(1);
  165. }
  166.  
  167. void bfgp( int mb, int mx, int my )        /*    バッファ編集窓間複写    */
  168. {
  169.     int mx2, my2;
  170.     mx2 = gpx(mx);
  171.     my2 = gpy(my);
  172.     if (mb == 1)
  173.     {
  174.         wget();
  175.         egbput(mx2, my2, mx2+NX3, my2+NY3, wb );
  176.     }    else    {
  177.         egbget(mx2, my2, mx2+NX3, my2+NY3, wb );
  178.         wput();
  179.     }
  180. }
  181.  
  182. void tclc(int mb, int mx, int my)
  183. {
  184.     char t[4];
  185.     egbget( mx/bi, my/bi, mx/bi, my/bi, t );
  186.     mcl[mb] = WORD(t) & CF;
  187.     mbclp();
  188. }
  189.  
  190. void bcls(void)
  191. {
  192.     int i;
  193.     for (i = 0; i<BY4; i+=2)
  194.     {
  195.         /*
  196.         line(BX1,BY1+i,BX2,BY1+i,0);
  197.         line(BX1,BY2-i,BX2,BY2-i,0);
  198.         */
  199.         line(BX1,BY1+i,BX1+i,BY1,0);
  200.         line(BX2,BY1+i,BX2-i,BY1,0);
  201.         line(BX1,BY2-i,BX1+i,BY2,0);
  202.         line(BX2,BY2-i,BX2-i,BY2,0);
  203.     }
  204. }
  205.  
  206. void wcls(void)
  207. {
  208.     int i;
  209.     for (i = 0; i<NY4; i+=2)
  210.     {
  211.         line(NX1,NY1+i,NX2,NY1+i,0);
  212.         line(NX1,NY2-i,NX2,NY2-i,0);
  213.     }
  214.     wkk();
  215. }
  216.  
  217. void aqx(void)
  218. {
  219.     egbget(BX1,BY1,BX2,BY2,b);
  220.     egbget(BX1+1,BY1,BX2+1,BY2,b+BX4*BY4*2);
  221.     egbputZ(BX1,BY1,BX1+BX4/2-1,BY2,BX4,BY4,b);
  222.     egbputZ(BX1+BX4/2,BY1,BX2,BY2,BX4,BY4,b+BX4*BY4*2);
  223. }
  224.  
  225. void aqy(void)
  226. {
  227.     egbget(BX1,BY1,BX2,BY2,b);
  228.     egbget(BX1,BY1+1,BX2,BY2+1,b+BX4*BY4*2);
  229.     egbputZ(BX1,BY1,BX2,BY1+BY4/2-1,BX4,BY4,b);
  230.     egbputZ(BX1,BY1+BY4/2,BX2,BY2,BX4,BY4,b+BX4*BY4*2);
  231. }
  232.